<?php

	require_once("app.config.php");
	require_once("MDB2.php");
	require_once("MDB2/Iterator.php");

	class Level
	{
		const FATAL = "FTL";
		const ERROR = "ERR";
		const WARNING = "WRN";
		const INFO = "INF";
		const DEBUG = "DBG";
	}

	class Mode
	{
		const DEBUG = "DEBUG";
		const DEVELOPMENT = "DEVELOPMENT";
		const TEST = "TEST";
		const PRODUCTION = "PRODUCTION";
	}


	function fresh_flush()
	{
		if (isset($_GET["flush"]) == false)
		{
			return;
		}
		
		unset($_SESSION['__JOY_USING__']);
		unset($_SESSION['__JOY_MODULE__']);
	}

	function using($path)
	{
		if (isset($_SESSION['__JOY_USING__'][$path])) 
		{
			return;
		}

		$_SESSION['__JOY_USING__'][$path] = $path;

		$path = str_replace(".", DIRECTORY_SEPARATOR, $path);

		if (strlen(strstr($path, DIRECTORY_SEPARATOR."*")) > 0) // Dizindeki tum dosyalar
		{
			$dir_path = rtrim($path, DIRECTORY_SEPARATOR."*");

			$dirh = opendir(APP_DIR.DIRECTORY_SEPARATOR."bin".DIRECTORY_SEPARATOR."$dir_path");
			while ($file = readdir($dirh))
			{
				if ($file != "." && $file != ".." && is_phpfile($file) )
				{
					require_once(APP_DIR.DIRECTORY_SEPARATOR."bin".DIRECTORY_SEPARATOR."$dir_path".DIRECTORY_SEPARATOR."$file");
				}
			}
		}
		else // tek bir sinif
		{
			require_once(APP_DIR.DIRECTORY_SEPARATOR."bin".DIRECTORY_SEPARATOR."$path.php");
		}
	}

	function is_phpfile($file)
	{
		return (preg_match("/^.*\.php$/", $file));
	}

	function is_cssfile($file)
	{
		return (preg_match("/^.*\.css$/", $file));
	}

	function is_jsfile($file)
	{
		return (preg_match("/^.*\.js$/", $file));
	}

	#$old_error_handler = set_error_handler("userErrorHandler");


	// user defined error handling function
	// function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars) 
	// {
	// TODO: Look http://tr2.php.net/manual/en/ref.errorfunc.php#ini.track-errors
	// }
	function stripslashes_recursively(&$array) 
	{
		foreach($array as $k => $v) 
		{
			if(is_array($v)) stripslashes_recursively($array[$k]);
			else $array[$k] = stripslashes($v);
		}
	}


	function magic_mime($filename) 
	{
		$idx = strtolower(end( explode( '.', $filename )) );
		$mimet = array(	'ai' =>'application/postscript',
			'aif' =>'audio/x-aiff',
			'aifc' =>'audio/x-aiff',
			'aiff' =>'audio/x-aiff',
			'asc' =>'text/plain',
			'atom' =>'application/atom+xml',
			'avi' =>'video/x-msvideo',
			'bcpio' =>'application/x-bcpio',
			'bmp' =>'image/bmp',
			'cdf' =>'application/x-netcdf',
			'cgm' =>'image/cgm',
			'cpio' =>'application/x-cpio',
			'cpt' =>'application/mac-compactpro',
			'crl' =>'application/x-pkcs7-crl',
			'crt' =>'application/x-x509-ca-cert',
			'csh' =>'application/x-csh',
			'css' =>'text/css',
			'dcr' =>'application/x-director',
			'dir' =>'application/x-director',
			'djv' =>'image/vnd.djvu',
			'djvu' =>'image/vnd.djvu',
			'doc' =>'application/msword',
			'dtd' =>'application/xml-dtd',
			'dvi' =>'application/x-dvi',
			'dxr' =>'application/x-director',
			'eps' =>'application/postscript',
			'etx' =>'text/X-Setext',
			'ez' =>'application/andrew-inset',
			'gif' =>'image/gif',
			'gram' =>'application/srgs',
			'grxml' =>'application/srgs+xml',
			'gtar' =>'application/x-gtar',
			'hdf' =>'application/x-hdf',
			'hqx' =>'application/mac-binhex40',
			'html' =>'text/html',
			'html' =>'text/html',
			'ice' =>'x-conference/x-cooltalk',
			'ico' =>'image/x-icon',
			'ics' =>'text/calendar',
			'ief' =>'image/ief',
			'ifb' =>'text/calendar',
			'iges' =>'model/iges',
			'igs' =>'model/iges',
			'jpe' =>'image/jpeg',
			'jpeg' =>'image/jpeg',
			'jpg' =>'image/jpeg',
			'js' =>'application/x-javascript',
			'kar' =>'audio/midi',
			'latex' =>'application/x-latex',
			'm3u' =>'audio/x-mpegurl',
			'man' =>'application/x-troff-man',
			'mathml' =>'application/mathml+xml',
			'me' =>'application/x-troff-me',
			'mesh' =>'model/mesh',
			'mid' =>'audio/midi',
			'midi' =>'audio/midi',
			'mif' =>'application/vnd.mif',
			'mov' =>'video/quicktime',
			'movie' =>'video/X-Sgi-movie',
			'mp2' =>'audio/mpeg',
			'mp3' =>'audio/mpeg',
			'mpe' =>'video/mpeg',
			'mpeg' =>'video/mpeg',
			'mpg' =>'video/mpeg',
			'mpga' =>'audio/mpeg',
			'ms' =>'application/x-troff-ms',
			'msh' =>'model/mesh',
			'mxu m4u' =>'video/vnd.mpegurl',
			'nc' =>'application/x-netcdf',
			'oda' =>'application/oda',
			'ogg' =>'application/ogg',
			'pbm' =>'image/x-portable-bitmap',
			'pdb' =>'chemical/x-pdb',
			'pdf' =>'application/pdf',
			'pgm' =>'image/x-portable-graymap',
			'pgn' =>'application/x-chess-pgn',
			'php' =>'application/x-httpd-php',
			'php4' =>'application/x-httpd-php',
			'php3' =>'application/x-httpd-php',
			'phtml' =>'application/x-httpd-php',
			'phps' =>'application/x-httpd-php-source',
			'png' =>'image/png',
			'pnm' =>'image/x-portable-anymap',
			'ppm' =>'image/x-portable-pixmap',
			'ppt' =>'application/vnd.ms-powerpoint',
			'ps' =>'application/postscript',
			'qt' =>'video/quicktime',
			'ra' =>'audio/x-pn-realaudio',
			'ram' =>'audio/x-pn-realaudio',
			'ras' =>'image/x-cmu-raster',
			'rdf' =>'application/rdf+xml',
			'rgb' =>'image/x-rgb',
			'rm' =>'application/vnd.rn-realmedia',
			'roff' =>'application/x-troff',
			'rtf' =>'text/rtf',
			'rtx' =>'text/richtext',
			'sgm' =>'text/sgml',
			'sgml' =>'text/sgml',
			'sh' =>'application/X-Sh',
			'shar' =>'application/X-Shar',
			'shtml' =>'text/html',
			'silo' =>'model/mesh',
			'sit' =>'application/X-Stuffit',
			'skd' =>'application/x-koan',
			'skm' =>'application/x-koan',
			'skp' =>'application/x-koan',
			'skt' =>'application/x-koan',
			'smi' =>'application/smil',
			'smil' =>'application/smil',
			'snd' =>'audio/basic',
			'spl' =>'application/x-futuresplash',
			'src' =>'application/x-wais-source',
			'sv4cpio' =>'application/X-Sv4cpio',
			'sv4crc' =>'application/X-Sv4crc',
			'svg' =>'image/svg+xml',
			'swf' =>'application/X-Shockwave-flash',
			't' =>'application/x-troff',
			'tar' =>'application/x-tar',
			'tcl' =>'application/x-tcl',
			'tex' =>'application/x-tex',
			'texi' =>'application/x-texinfo',
			'texinfo' =>'application/x-texinfo',
			'tgz' =>'application/x-tar',
			'tif' =>'image/tiff',
			'tiff' =>'image/tiff',
			'tr' =>'application/x-troff',
			'tsv' =>'text/tab-separated-values',
			'txt' =>'text/plain',
			'ustar' =>'application/x-ustar',
			'vcd' =>'application/x-cdlink',
			'vrml' =>'model/vrml',
			'vxml' =>'application/voicexml+xml',
			'wav' =>'audio/x-wav',
			'wbmp' =>'image/vnd.wap.wbmp',
			'wbxml' =>'application/vnd.wap.wbxml',
			'wml' =>'text/vnd.wap.wml',
			'wmlc' =>'application/vnd.wap.wmlc',
			'wmlc' =>'application/vnd.wap.wmlc',
			'wmls' =>'text/vnd.wap.wmlscript',
			'wmlsc' =>'application/vnd.wap.wmlscriptc',
			'wmlsc' =>'application/vnd.wap.wmlscriptc',
			'wrl' =>'model/vrml',
			'xbm' =>'image/x-xbitmap',
			'xht' =>'application/xhtml+xml',
			'xhtml' =>'application/xhtml+xml',
			'xls' =>'application/vnd.ms-excel',
			'xml xsl' =>'application/xml',
			'xpm' =>'image/x-xpixmap',
			'xslt' =>'application/xslt+xml',
			'xul' =>'application/vnd.mozilla.xul+xml',
			'xwd' =>'image/x-xwindowdump',
			'xyz' =>'chemical/x-xyz',
			'zip' =>'application/zip'
		);

		if (isset( $mimet[$idx] )) 
		{
			return $mimet[$idx];
		} 
		else {
			return mime_content_type($filename);
		}
	}

	function securedata($value)
	{
		$value = str_replace("<", "&lt;", $value);
		$value = str_replace(">", "&gt;", $value);

		if (!get_magic_quotes_gpc()) {
				    $value = addslashes($value);
		}

		return $value;
	}


?>
